﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _07_委托_必要性3
{
    public delegate void DoSomeDelegate();
    internal class Program
    {
        static void Main(string[] args)
        {
            //没有使用委托的情况下，我们当我们需要在程序的不同位置调用同一个方法时，我们需要在每个位置都写一遍方法调用代码
            //这样会导致代码的重复，不利于代码的维护
            //使用委托的情况下，我们只需要在一个地方定义一个委托，然后在需要调用的地方调用委托即可。这样可以批量替换需要调用的方法，提高代码的可维护性

            #region 没有使用委托的情况

            //SayHi();
            //SayHi();
            //SayHi();

            //SayHi();
            //SayHi();

            //SayHi();
            //SayHi();
            //SayHi();

            #endregion

            #region 使用委托的情况

            DoSomeDelegate doSomeDelegate = new DoSomeDelegate(DoSomeMethod);

            doSomeDelegate();
            doSomeDelegate();
            doSomeDelegate();

            doSomeDelegate();
            doSomeDelegate();

            doSomeDelegate();
            doSomeDelegate();
            doSomeDelegate();

            #endregion

            Console.ReadKey();
        }
        public static void DoSomeMethod()
        {
            Console.WriteLine(DateTime.Now.ToString());
        }
        public static void SayHi()
        {
            Console.WriteLine("Hi");
        }

    }
}
